home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-9.10-netbook-remix-PL.iso / casper / filesystem.squashfs / usr / lib / python2.6 / lib-tk / FixTk.py < prev    next >
Text File  |  2009-11-02  |  3KB  |  77 lines

  1. import sys, os
  2.  
  3. # Delay import _tkinter until we have set TCL_LIBRARY,
  4. # so that Tcl_FindExecutable has a chance to locate its
  5. # encoding directory.
  6.  
  7. # Unfortunately, we cannot know the TCL_LIBRARY directory
  8. # if we don't know the tcl version, which we cannot find out
  9. # without import Tcl. Fortunately, Tcl will itself look in
  10. # <TCL_LIBRARY>\..\tcl<TCL_VERSION>, so anything close to
  11. # the real Tcl library will do.
  12.  
  13. # Expand symbolic links on Vista
  14. try:
  15.     import ctypes
  16.     ctypes.windll.kernel32.GetFinalPathNameByHandleW
  17. except (ImportError, AttributeError):
  18.     def convert_path(s):
  19.         return s
  20. else:
  21.     def convert_path(s):
  22.         if isinstance(s, str):
  23.             s = s.decode("mbcs")
  24.         hdir = ctypes.windll.kernel32.\
  25.             CreateFileW(s, 0x80,    # FILE_READ_ATTRIBUTES
  26.                         1,          # FILE_SHARE_READ
  27.                         None, 3,    # OPEN_EXISTING
  28.                         0x02000000, # FILE_FLAG_BACKUP_SEMANTICS
  29.                         None)
  30.         if hdir == -1:
  31.             # Cannot open directory, give up
  32.             return s
  33.         buf = ctypes.create_unicode_buffer(u"", 32768)
  34.         res = ctypes.windll.kernel32.\
  35.             GetFinalPathNameByHandleW(hdir, buf, len(buf),
  36.                                       0) # VOLUME_NAME_DOS
  37.         ctypes.windll.kernel32.CloseHandle(hdir)
  38.         if res == 0:
  39.             # Conversion failed (e.g. network location)
  40.             return s
  41.         s = buf[:res]
  42.         # Ignore leading \\?\
  43.         if s.startswith(u"\\\\?\\"):
  44.             s = s[4:]
  45.         return s
  46.  
  47. prefix = os.path.join(sys.prefix,"tcl")
  48. if not os.path.exists(prefix):
  49.     # devdir/../tcltk/lib
  50.     prefix = os.path.join(sys.prefix, os.path.pardir, "tcltk", "lib")
  51.     prefix = os.path.abspath(prefix)
  52. # if this does not exist, no further search is needed
  53. if os.path.exists(prefix):
  54.     prefix = convert_path(prefix)
  55.     if not os.environ.has_key("TCL_LIBRARY"):
  56.         for name in os.listdir(prefix):
  57.             if name.startswith("tcl"):
  58.                 tcldir = os.path.join(prefix,name)
  59.                 if os.path.isdir(tcldir):
  60.                     os.environ["TCL_LIBRARY"] = tcldir
  61.     # Compute TK_LIBRARY, knowing that it has the same version
  62.     # as Tcl
  63.     import _tkinter
  64.     ver = str(_tkinter.TCL_VERSION)
  65.     if not os.environ.has_key("TK_LIBRARY"):
  66.         v = os.path.join(prefix, 'tk'+ver)
  67.         if os.path.exists(os.path.join(v, "tclIndex")):
  68.             os.environ['TK_LIBRARY'] = v
  69.     # We don't know the Tix version, so we must search the entire
  70.     # directory
  71.     if not os.environ.has_key("TIX_LIBRARY"):
  72.         for name in os.listdir(prefix):
  73.             if name.startswith("tix"):
  74.                 tixdir = os.path.join(prefix,name)
  75.                 if os.path.isdir(tixdir):
  76.                     os.environ["TIX_LIBRARY"] = tixdir
  77.